package bufioNewReader

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

/***
bufio.NewReader(os.Stdin) 是 Go 语言中用于创建带缓冲的输入读取器的函数调用，具体说明如下：

基本信息
包来源：bufio 包，用于提供带缓冲的 I/O 操作
参数：os.Stdin，表示标准输入流
返回值：*bufio.Reader 类型的缓冲读取器

主要功能
提供缓冲读取功能，提高 I/O 性能
支持按行读取、按字节读取等多种读取方式
减少系统调用次数，提升读取效率

常用方法
ReadString(delim byte)：读取直到分隔符 delim 的字符串
ReadLine()：读取一行数据
ReadBytes(delim byte)：读取直到分隔符的字节切片
*/

func Test() {

	reader := bufio.NewReader(os.Stdin)

	// 读取字符串
	fmt.Print("请输入你的名字：")
	name, _ := reader.ReadString('\n')
	fmt.Println("去除开头和结尾的空白字符（包括空格、制表符、换行符等）", strings.TrimSpace(name))
	fmt.Println("获取输入的名字：", name)

	// 读取整数
	fmt.Print("请输入你的年龄：")
	ageStr, _ := reader.ReadString('\n')
	ageStr = strings.TrimSpace(ageStr)
	age, _ := strconv.Atoi(ageStr)
	fmt.Println("获取输入的年龄：", age)
	fmt.Println()

	// 读取浮点数
	fmt.Print("请输入你的身高：")
	heightStr, _ := reader.ReadString('\n')
	heightStr = strings.TrimSpace(heightStr)
	height, _ := strconv.ParseFloat(heightStr, 64)
	fmt.Println("获取输入的身高：", height)
}
